﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Net;
using System.Net.Mail;
using GomMinhLongBL;
using GomMinhLongDO;
using System.Net.Configuration;
using System.Web.SessionState;


namespace GomMinhLong
{
    public partial class GuiGioHang : System.Web.UI.Page
    {
        ClientLoginDO obj = new ClientLoginDO();
        GomMinhLong.ShoppingCart vpp = new GomMinhLong.ShoppingCart();
        private static DataTable tb = new DataTable();
        private static DataTable dt = new DataTable();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                loadGioHang();
            }
        }
        
        protected void loadGioHang()
        {
            Page.Title = "Thanh toán" + " - " + Ultility.PageTitle();

            HtmlMeta meta = new HtmlMeta();
            meta.Name = "Description";
            meta.Content = Page.Title;
            Page.Header.Controls.Add(meta);

            if (Session["GioHang"] != null)
            {
                tb = (DataTable)Session["GioHang"];
                dt = new DataTable();
                dt.Columns.Add("STT");
                dt.Columns.Add("SanPhamID");
                dt.Columns.Add("TenSanPham");
                dt.Columns.Add("HinhAnh");
                dt.Columns.Add("SoLuong");
                dt.Columns.Add("DonGia");
                dt.Columns.Add("ThanhTien", typeof(Decimal));

                int i = 0;
                foreach (DataRow dr in tb.Rows)
                {
                    cmsSanPhamDO obj = new cmsSanPhamBL().Select(new cmsSanPhamDO { SanPhamID = Int64.Parse(dr[1].ToString()) });
                    i++;
                    DataRow row = dt.NewRow();
                    row[0] = dr[0];
                    row[1] = dr[1];
                    row[3] = obj.HinhAnh;
                    row[4] = dr[2];
                    row[2] = obj.TenSanPham;
                    row[5] = obj.DonGia;
                    float price = obj.DonGia;
                    row[6] = price * int.Parse(dr[2].ToString());
                    dt.Rows.Add(row);
                }

                if (dt.Rows.Count > 0)
                {
                    GridGioHang.DataSource = dt;
                    GridGioHang.DataBind();
                    float sum = 0;
                    for (int j = 0; j < dt.Rows.Count; j++)
                    {
                        Label lb = GridGioHang.Rows[j].FindControl("lbDG") as Label;
                        int s = int.Parse(dt.Rows[j].ItemArray[5].ToString());
                        lb.Text = s.ToString("##,## VNÐ");
                        lb = GridGioHang.Rows[j].FindControl("lbThanhTien") as Label;
                        s = int.Parse(dt.Rows[j].ItemArray[6].ToString());
                        lb.Text = s.ToString("##,## VNÐ");

                        sum += float.Parse(dt.Rows[j].ItemArray[6].ToString());
                    }
                    lblSum.Text = "Tổng: <span style='color:red;font-weight:bold;'>" + sum.ToString("##,## VNÐ") + "</span>";
                    lbThanhTien.Text = "Tổng: <span style='color:green;font-weight:bold;'>" + NumberToStringVN.DocTienBangChu((decimal)sum, " đồng") + "</span";
                }
            }
            else
            {
                lbl.Text = "Chua có sản phẩm nào trong giỏ hàng!!";
                lblSum.Text = "";
            }
        }

        protected void GridGioHang_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            if (e.NewPageIndex != null)
            {
                GridGioHang.PageIndex = e.NewPageIndex;
            }
            loadGioHang();
        }

        protected void GridGioHang_RowDataBound(object sender, GridViewRowEventArgs e)
        {

        }
        
        public static String Address
        {
            get
            {
                SmtpSection cfg = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
                return cfg.Network.UserName;
            }
        }
        
        public static String Pass
        {
            get
            {
                SmtpSection cfg = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
                return cfg.Network.Password;
            }
        }
        
        public void sendsMail(String addr, String name, String bd, string title)
        {
            SmtpClient SmtpServer = new SmtpClient();
            SmtpServer.Credentials = new System.Net.NetworkCredential(Address, Pass);
            SmtpServer.Port = 587;
            SmtpServer.Host = "Smtp.gmail.com";
            SmtpServer.EnableSsl = true;
            MailMessage mail = new MailMessage();
            try
            {
                mail.From = new MailAddress(addr, name, System.Text.Encoding.UTF8);
                mail.To.Add(addr);
                mail.Subject = title;
                mail.Body = bd;
                mail.IsBodyHtml = true;
                mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                SmtpServer.Send(mail);
            }
            catch (Exception ex)
            {
            }
        }
        
        public cmsGioHangDO init()
        {
            HttpSessionState ss = HttpContext.Current.Session;
            string session = ss.SessionID;

            cmsGioHangDO objGioHang = new cmsGioHangDO();
            if (Session["IDDN"] != null)
            {
                obj = new ClientLoginBL().Select(new ClientLoginDO { ClientLoginID = int.Parse(Session["IDDN"].ToString()) });
            }
            else
            {
                obj.ClientLoginID = 0;
                obj.ClientName = txtHT.Text;
                obj.Email = txtEmail.Text;
                obj.Mobile = txtsdt.Text;
                obj.Address = txtDC.Text;
            }
            objGioHang.ClientLoginID = obj.ClientLoginID;
            objGioHang.HinhThucThanhToan = txtHTTT.Text;
            objGioHang.NgayDatHang = DateTime.Now;
            objGioHang.NgayGiaoHang = DateTime.Parse(txtNgayGiaoHang.Text);
            objGioHang.SessionID = session;
            objGioHang.XuLy = false;

            return objGioHang;
        }

        protected void btn_Click(object sender, EventArgs e)
        {
            cmsGioHangDO objGioHang = init();
            bool kt = false;
            int kq = 0;
            float sum = 0;
            foreach (DataRow dr in dt.Rows)
            {
                try
                {
                    objGioHang.SanPhamID = Int64.Parse(dr[1].ToString());
                    objGioHang.SoLuong = Int32.Parse(dr[4].ToString());
                    objGioHang.NgayDatHang = DateTime.Now;
                    objGioHang.NgayGiaoHang = Convert.ToDateTime(txtNgayGiaoHang.Text);
                    objGioHang.XuLy = false;
                    objGioHang.ThanhTien = float.Parse(dr[6].ToString());
                    objGioHang.TienTe = "VNĐ";
                    sum += float.Parse(dr[6].ToString());
                    kq = new cmsGioHangBL().Insert(objGioHang);
                }
                catch (Exception ee)
                {
                    kt = true;
                }
            }
            if (kt == false)
            {
                cmsDonHangDO objDonHang = new cmsDonHangDO();
                objDonHang.HoTen = txtHT.Text;
                objDonHang.DiaChiGiaoHang = txtDCGH.Text;
                objDonHang.DiaChi = txtDC.Text;
                objDonHang.Email = txtEmail.Text;
                objDonHang.GhiChu = txtGC.Text;
                objDonHang.HTTT = txtHTTT.Text;
                objDonHang.SDT = txtsdt.Text;
                objDonHang.SessionID = objGioHang.SessionID;
                objDonHang.TongTien = sum;
                objDonHang.UserID = 0;
                objGioHang.XuLy = true;
                objDonHang.TienTe = "VNĐ";
                kq = new cmsDonHangBL().Insert(objDonHang);
                objDonHang.XuLy = true;

                new cmsGioHangBL().Update(objGioHang);
                Session["GioHang"] = null;
                try
                {
                    string body1 = "Chào ông chủ, <br/> Có đơn đặt hàng từ " + objDonHang.HoTen + "<br /> Email: " + objDonHang.Email + "<br/> <b>Kính mời ông chủ vào phần quản trị admin để xem đơn hàng.</b></br> </br> Chúc ông chủ một ngày tốt lành!";
                    string body = "Chào bạn, bạn nhận được email này vì đã tiến hành đặt hàng trên website của gốm Minh Long. Chúng tôi sẽ liên hệ với bạn trong thời gian sớm nhất.";
                    sendsMail(objDonHang.Email, "Công ty Nguyễn Đăng - Phân phối gốm Minh Long", body, "Đơn đặt hàng gốm Minh Long");
                    sendsMail(new sysConfigBL().Select(new sysConfigDO { ConfigID = 3 }).ConfigValue, objDonHang.HoTen, body1, "Đơn đặt hàng");
                    //SessionIDManager Manager = new SessionIDManager();
                    //Session.Timeout = 1;
                    Session.Abandon();
                    Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
                    //Session.RemoveAll();
                    //Session.Clear();
                    Ultility.Alert("Bạn đã đặt hàng thành công!!", "/Trang-chu.htm");
                }
                catch { }
            }
        }

        protected void btnHuy_Click(object sender, EventArgs e)
        {
            Response.Redirect("/Gio-Hang.htm");
        }
    }
}